package cn.bugstack.trigger.api;

import cn.bugstack.trigger.api.dto.*;
import cn.bugstack.types.model.Response;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author: Zchy
 * @Description: 抽奖活动服务
 * @DateTime: 12/5/2024 2:20 PM
 **/
public interface IRaffleActivityService {

    /*
     * 活动装配，缓存装配预热
     *
     * @author: Zchy
     * @date: 12/5/2024 2:26 PM
     * @param: activityId
     * @return: cn.bugstack.types.model.Response<java.lang.Boolean>
    **/
    Response<Boolean> armory(Long activityId);

    /*
     * 活动抽奖接口
     *
     * @author: Zchy
     * @date: 12/5/2024 2:25 PM
     * @param: activityDrawRequestDTO
     * @return: cn.bugstack.types.model.Response<cn.bugstack.trigger.api.dto.ActivityDrawResponseDTO>
    **/
    Response<ActivityDrawResponseDTO> draw(ActivityDrawRequestDTO activityDrawRequestDTO);

    /**
     * 日历签到返利接口
     *
     * @author: Zchy
     * @date: 2024/12/31 22:43
     * @param: userId 用户id
     * @return: cn.bugstack.types.model.Response<java.lang.Boolean> 返回结果
    **/
    Response<Boolean> calendarSignRebate(String userId);

    Response<Boolean> isCalendarSignRebate(String userId);

    Response<UserActivityAccountResponseDTO> queryUserActivityAccount(UserActivityAccountRequestDTO request);

    /**
     * 查询sku商品集合
     *
     * @param activityId 活动ID
     * @return 商品集合
     */
    Response<List<SkuProductResponseDTO>> querySkuProductListByActivityId(Long activityId);

    /**
     * 查询用户积分值
     *
     * @param userId 用户ID
     * @return 可用积分
     */
    Response<BigDecimal> queryUserCreditAccount(String userId);

    /**
     * 积分支付兑换商品
     *
     * @param request 请求对象「用户ID、商品ID」
     * @return 兑换结果
     */
    Response<Boolean> creditPayExchangeSku(SkuProductShopCartRequestDTO request);
}
